package com.errol.generic.baiducloud.faceai.pojo.personverify;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.renjia.service.generic.baiducloud.basic.pojo.AbstractBaiduApiResultDTO;
import lombok.Data;

/**
 * @author zhang xiao bin
 * @version v1.0
 * @date 2021/03/29
 * @since v
 **/
@Data
public class BaiduPersonVerifyV3ResultDTO extends AbstractBaiduApiResultDTO {

    private ResultStatus resultStatus;

    private Result result;

    @JsonIgnore
    public boolean isMatching() {
        return result != null && result.getScore() != null && result.getScore() > 80;
    }

    public BaiduPersonVerifyV3ResultDTO() {
    }

    public BaiduPersonVerifyV3ResultDTO(ResultStatus resultStatus) {
        this.resultStatus = resultStatus;
    }

    public ResultStatus getResultStatus() {
        if (resultStatus == null) {
            resultStatus = Integer.valueOf(0).equals(getErrCode()) ? ResultStatus.SUCCESS : ResultStatus.FAILURE;
        }
        return resultStatus;
    }

    public enum ResultStatus {
        /**
         * 成功返回结果
         */
        SUCCESS,
        /**
         * 执行失败，抛出异常
         */
        EXCEPTION,
        /**
         * 照片 base64 编码后超过 4M
         */
        IMAGE_TOO_BIG,
        /**
         * 返回错误码，具体原因输出 errCode 和 errMsg
         */
        FAILURE,
    }

    @Data
    public static class Result {
        /**
         * 与公民身份证小图相似度可能性，用于验证生活照与公民身份证小图是否为同一人，有正常分数时为[0~100]，推荐阈值80，超过即判断为同一人
         */
        private Float score;
    }
}
